package ArrayListTravel;

// 掌握ArrayList的常用方法
// ArrayList的遍历：三种方式

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Test {
    public static void main(String[] args) {
        //List<Integer> list = new List<>();  //错误！List是接口，不能进行实例化！！但是可以对具体子类进行初始化

        List<Integer> list = new ArrayList<>();
        // 增加元素！
        list.add(12);
        list.add(34);
        list.add(2,56);
        list.add(78);
        list.add(4,90);

        // for循环+下标进行遍历:注意获取长度的方法
        System.out.println("使用for循环+下标进行遍历：");
        for (int i = 0; i < list.size(); i++) {
            // 注意获取下标对应元素的方法
            System.out.print(list.get(i)+" ");
        }
        System.out.println();

        // 使用for-each进行遍历：
        System.out.println("使用for-each进行遍历：");
        for (int x:list) {
            System.out.print(x+" ");
        }
        System.out.println();

        // 使用迭代器遍历
        // 使用ListIterator
        System.out.println("使用ListIterator迭代器遍历（调用List方法）：");
        ListIterator<Integer> listIterator = list.listIterator(); // 一定要注意该处的赋值内容是调用List的方法！！
        while(listIterator.hasNext()) {
            System.out.print(listIterator.next()+" ");
        }
        System.out.println();

        // 使用Iterator
        System.out.println("使用Iterator迭代器遍历（调用List方法）：");
        Iterator<Integer> iterator = list.iterator(); // 一定要注意该处的赋值内容是调用List的方法！！
        while(iterator.hasNext()) {
            System.out.print(iterator.next()+" ");
        }
        System.out.println();
    }
}


// 合法定义
/*class MyArrayList<T>{
    MyArrayList<String> list = new MyArrayList();
}*/



